Amazon Athena
AWSで利用できるSQLservice
基本はDatalake構成の中で利用される
https://gyazo.com/164a8d3f2d70350b98dd77118c357efb
基本構成は以下の図の通り
https://gyazo.com/dda4d99ab6be0857ffed398867834706
利用時
AWS management Consoleで、SQLを叩く
内部ではAthenaがGlue Catalog経由でS3内部の情報を取得しにいく
このとき権限はaws lake formationに登録された権限でdata取得される
利用するための準備
1. S3にdataを保存する
csvでもOK。
高速 & 低コストで使いたいならばParquetがおすすめ
2. Glue CrawlerでGlue Catalogを作る
SQLでdata抽出するには事前にtable定義が必要
S3にあるだけではtable定義がsystemにわからない
Glue Crawlerにて自動でtable定義を取得する
3. Lake FormationにS3 pathを登録する
登録しないと、IAM policyとS3 bucket policyのAND条件で「権限付与」される
「このtableの中身を見れるか?」はIAMとS3両方の設定を見にいく必要性
めんどくさいtsawada.icon
Lake FormationにS3 pathを登録すると「IAM policy」「S3 bucket Policy」が無効化される
Management ConsoleでLake FormationのPermissionをみる
全ての権限が一覧で見られる
Athenaは使うための準備にコツがいる
理由は「RDBMSの仕組みを擬似的に実現している」ため
RDBMSの「DB構築」と似た手順が必要
1. Dataの「構造」を定義する
2. 構造に合わせてDataを格納する(これはS3)
「構造の定義」は3種類のやり方がある
Athenaにて先に宣言する
SQLのCREATEステートメントで宣言する
参考)CREATE TABLE - Amazon Athena
AWS Glue上で定義する
参考)AWS Glue データカタログ でテーブルを定義する - AWS Glue
Glueの「Crawler」機能で、自動で定義する
参考)クローラの定義 - AWS Glue
NPではこれが主流tsawada.icon
一番手軽なため
他手段だと、table構造を明文化しないといけない
Athenaは「Presto」という仕組みで動いている
SQLにも方言があり、Preztoに合ったSQLじゃないと動かない
Prezto自体はFacebookが公開した仕組み
Preztoのチャーミングなポイントが二つ
分散処理基盤であること(=大規模Dataを扱える)
バッチ処理じゃないこと(=リアルタイムですぐ結果が返ってくる)
参考)『Prestoとは何か,Prestoで何ができるか』 - Arm Treasure Data
Athenaを使いこなす上で知っておきたい知識
AWS Lake Formation
Amazon Athena
AWS Glue
ワークグループのポリシーの例 - Amazon Athena
Amazon Athena のアクション、リソース、および条件キー - AWS Identity and Access Management
DatalakeをAthenaから利用するためのIAM policy
Athenaを起動する度、Get Startedが表示される
Amazon athenaの料金